﻿using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Windows;
using 凯蒽斯.Dto;
using 凯蒽斯.Help;

namespace 凯蒽斯.ExpansionPge
{
    // 实现 INotifyPropertyChanged 接口（.NET Core 中用法相同）
    public partial class HistoricalAlerts : Window, INotifyPropertyChanged
    {
        // 报警数据集合（绑定到 ListView）
        private ObservableCollection<AlarmRecord> _alertItems;
        public ObservableCollection<AlarmRecord> AlertItems
        {
            get => _alertItems;
            set
            {
                _alertItems = value;
                OnPropertyChanged(); // .NET Core 中可省略属性名（需配合 [CallerMemberName]）
            }
        }

        // INotifyPropertyChanged 实现（.NET Core 中用法相同）
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        public HistoricalAlerts()
        {
            InitializeComponent();
            DataContext = this;

            // 初始化数据集合
            AlertItems = new ObservableCollection<AlarmRecord>();
            LoadSampleData(); // 加载示例数据
        }

        // 加载示例数据（模拟从数据库获取）
        private async Task LoadSampleData()
        {
            AlertItems.Clear();
            foreach (var alarm in SqlHelp.Db.Queryable<AlarmRecord>().ToList()) { 
                AlertItems.Add(alarm);
            }

            UpdateTotalCount();
        }

        // 查询按钮点击事件
        private void BtnQuery_Click(object sender, RoutedEventArgs e)
        {
            DateTime? start = dpStart.SelectedDate;
            DateTime? end = dpEnd.SelectedDate;

            if (!start.HasValue || !end.HasValue)
            {
                MessageBox.Show("请选择查询时间范围", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            if (start > end)
            {
                MessageBox.Show("开始时间不能晚于结束时间", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            string? startStr = start?.ToString("yyyy-MM-dd HH:mm:ss");
            string? endStr = end?.ToString("yyyy-MM-dd HH:mm:ss");
            // 构建查询条件（处理空值场景）
            var query = SqlHelp.Db.Queryable<AlarmRecord>();

            // 如果开始时间不为空，添加开始时间条件
            if (!string.IsNullOrEmpty(startStr))
            {
                query = query.Where(x => x.Timestamp.CompareTo(startStr) >= 0);
            }

            // 如果结束时间不为空，添加结束时间条件
            if (!string.IsNullOrEmpty(endStr))
            {
                query = query.Where(x => x.Timestamp.CompareTo(endStr) <= 0);
            }

            // 执行查询
            List<AlarmRecord> result = query.ToList();
            AlertItems.Clear();
            foreach (var alarm in result)
            {
                AlertItems.Add(alarm);
            }
            UpdateTotalCount();
        }

        // 清空按钮点击事件
        private void BtnClear_Click(object sender, RoutedEventArgs e)
        {
            AlertItems.Clear();
            dpStart.SelectedDate = null;
            dpEnd.SelectedDate = null;
            UpdateTotalCount();
        }

        

        // 刷新按钮点击事件
        private void BtnRefresh_Click(object sender, RoutedEventArgs e)
        {
            LoadSampleData();
            MessageBox.Show("刷新成功", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        // 更新记录总数显示
        private void UpdateTotalCount()
        {
            tbTotal.Text = $"共 {AlertItems.Count} 条记录";
        }
    }

    // 报警信息数据模型（POCO 类，.NET Core 中无差异）
   
}